#include <head.h>

int main(int argc, char const *argv[])
{
    int fifo_fd_1 = open("fifo_1" , O_RDONLY );
    if(fifo_fd_1 == -1) {ERRLOG("文件打开失败"); return 0;}
    printf("文件1启动成功\n");

    int fifo_fd_2 = open("fifo_2" , O_RDONLY );
    if(fifo_fd_2 == -1) {ERRLOG("文件打开失败"); return 0;}
    printf("文件2启动成功\n");

    int fifo_fd_3 = open("fifo_3" , O_RDONLY );
    if(fifo_fd_3 == -1) {ERRLOG("文件打开失败"); return 0;}
    printf("文件3启动成功\n");

    //设定非阻塞模式
    int flag;

    // 获取状态
    flag = fcntl(fifo_fd_1 , F_GETFL);
    // 对标志位写入非阻塞
    flag |= O_NONBLOCK;
    // 对文件描述符写入非阻塞
    fcntl(fifo_fd_1 , F_SETFL , flag);

    // 获取状态
    flag = fcntl(fifo_fd_2 , F_GETFL);
    // 对标志位写入非阻塞
    flag |= O_NONBLOCK;
    // 对文件描述符写入非阻塞
    fcntl(fifo_fd_2 , F_SETFL , flag);


    // 获取状态
    flag = fcntl(fifo_fd_3 , F_GETFL);
    // 对标志位写入非阻塞
    flag |= O_NONBLOCK;
    // 对文件描述符写入非阻塞
    fcntl(fifo_fd_3 , F_SETFL , flag);


    char buf[1024];

    int byte = 0;

    int fifo_fds[3] = {fifo_fd_1 , fifo_fd_2 , fifo_fd_3};

    while (1)
    {
        memset(buf , 0 , sizeof(buf));
        for (int i = 0; i < 3; i++)
        {
            // 读取
            byte = read(fifo_fds[i] , buf , sizeof(buf));
            if(byte > 0)
            {
                printf("fifo_%d = %s\n" , i + 1, buf);
            }
        }
    }
    

    close(fifo_fd_1);
    close(fifo_fd_2);
    close(fifo_fd_3);
    return 0;
}